#!/usr/bin/env python
# -*- coding: UTF-8 -*-

class cat:
    eof           = 0
    asignacion    = 1
    real          = 2
    entero        = 3
    identificador = 4
    
class componente:
    catstr = ["eof", "asignacion", "real", "entero", "identificador"]
    
    def __init__(self, cat):
        self.cat = cat
        
    def __str__(self):
        s = "[%s" % componente.catstr[self.cat]
        for atr, val in self.__dict__.items():
            if atr != "cat":
                s = s + " %s=%s" % (atr, val)
        return s + "]"
    
class asignacion(componente):
    def __init__(self):
        componente.__init__(self, cat.asignacion)
        
class real(componente):
    def __init__(self, valor):
        componente.__init__(self, cat.real)
        self.valor = valor
        
class entero(componente):
    def __init__(self, valor):
        componente.__init__(self, cat.entero)
        self.valor = valor
        
class identificador(componente):
    def __init__(self, lexema):
        componente.__init__(self, cat.identificador)
        self.lexema = lexema
        
class eof(componente):
    def __init__(self):
        componente.__init__(self, cat.eof)
